--[[ 编码: JX-102-02 名称: 创建后 作者: 日期: 2025-1-29 函数: AfterDataObjDelete 功能: -- 删除【波次组成】【波次明细】 -- 删除入库波次计划出库的料箱等,更新入库单信息 更改记录: --]] wms_base = require ("wms_base") function AfterDataObjDelete( strLuaDEID ) local nRet, strRetInfo -- 获取 S_NO nRet, strRetInfo = mobox.getCurEditDataObjAttr( strLuaDEID, "S_WAVE_NO", "N_B_STATE" ) if ( nRet ~= 0 ) then lua.Error( strLuaDEID, debug.getinfo(1), "获取当前编辑属性失败! "..strRetInfo ) end local obj_attrs = json.decode( strRetInfo ) local wave_no = obj_attrs[1].value local b_state = lua.StrToNumber( obj_attrs[2].value ) if ( wave_no == '' or wave_no == nil ) then return end -- 删除波次组成 local strCondition = "S_WAVE_NO = '"..wave_no.."'" nRet, strRetInfo = mobox.dbdeleteData( strLuaDEID, "IW_Compose", strCondition ) if ( nRet ~= 0) then lua.Error( strLuaDEID, debug.getinfo(1), "删除入库波次相关的【波次组成】失败! "..strRetInfo ) end -- 删除入库波次组成 local strCondition = "S_WAVE_NO = '"..wave_no.."'" nRet, strRetInfo = mobox.dbdeleteData(strLuaDEID, "IW_Detail", strCondition) if (nRet ~= 0) then lua.Error( strLuaDEID, debug.getinfo(1), "删除【IW_Detail】失败!"..strRetInfo) end -- 更新【入库单】中的 S_WAVE_NO,S_STATION_NO, S_OPERATOR_NAME, S_OPERATOR, N_B_STATE local strUpdateSql = "N_B_STATE = 0, S_WAVE_NO = '', S_STATION_NO ='', S_OPERATOR_NAME = '', S_OPERATOR = ''" local strCondition = "S_WAVE_NO = '"..wave_no.."'" nRet, strRetInfo = mobox.updateDataAttrByCondition( strLuaDEID, "Inbound_Order", strCondition, strUpdateSql ) if ( nRet ~= 0 ) then return 2, "更新【入库单】信息失败!"..strRetInfo end -- 如果业务状态不等于完成 要把容器解锁 if ( b_state ~= 3 ) then -- 释放预分配的料格数量 strCondition = "S_BS_NO = '"..wave_no.."'" nRet, data_objs = m3.QueryDataObject(strLuaDEID, "Pre_Alloc_CNTR_Detail", strCondition, "S_CNTR_CODE" ) if (nRet ~= 0) then lua.Error( strLuaDEID, debug.getinfo(1), "QueryDataObject失败!"..data_objs ) end if ( data_objs ~= '' ) then local n, m local pac_detail local cntr_list = {} local find for n = 1, #data_objs do pac_detail = m3.KeyValueAttrsToObjAttr(data_objs[n].attrs) find = false local cell = { cell_no = pac_detail.S_CELL_NO } for m = 1, #cntr_list do if ( cntr_list[m].cntr_code == pac_detail.S_CNTR_CODE ) then find = true table.insert( cntr_list[m].cell_list, cell ) break end end if ( find == false ) then local cntr = { cntr_code = pac_detail.S_CNTR_CODE, cell_list = {} } table.insert( cntr.cell_list, cell ) table.insert( cntr_list, cntr ) end end local cell_num for m = 1, #cntr_list do strCondition = "S_CODE = '"..cntr_list[m].cntr_code.."'" cell_num = #cntr_list[m].cell_list nRet, strRetInfo = mobox.decDataObjAccQty( strLuaDEID, "Container", strCondition, "N_ALLOC_CELL_NUM", cell_num ) if ( nRet ~= 0 ) then lua.Error( strLuaDEID, debug.getinfo(1), "decDataObjAccQty(Container)失败! "..strRetInfo ) end end -- 把料格状态=3(预约)的设置为 0 strUpdateSql = "N_EMPTY_FULL = 0, S_ALLOC_OP_CODE = ''" strCondition = "N_EMPTY_FULL = 3 AND S_ALLOC_OP_CODE = '"..wave_no.."'" nRet, strRetInfo = mobox.updateDataAttrByCondition( strLuaDEID, "Container_Cell", strCondition, strUpdateSql ) if ( nRet ~= 0 ) then lua.Error( strLuaDEID, debug.getinfo(1), "更新【Container_Cell】状态信息失败!"..strRetInfo ) end end end -- 删除[预分配容器/Pre_Alloc_Container] local strCondition = "S_BS_TYPE = 'Inbound_Wave' AND S_BS_NO = '"..wave_no.."'" nRet, strRetInfo = mobox.dbdeleteData(strLuaDEID, "Pre_Alloc_Container", strCondition) if (nRet ~= 0) then lua.Error( strLuaDEID, debug.getinfo(1), "删除【Pre_Alloc_Container】失败!"..strRetInfo) end -- 删除[组盘明细/Pre_Alloc_CNTR_Detail] nRet, strRetInfo = mobox.dbdeleteData(strLuaDEID, "Pre_Alloc_CNTR_Detail", strCondition) if (nRet ~= 0) then lua.Error( strLuaDEID, debug.getinfo(1), "删除【Pre_Alloc_CNTR_Detail】失败!"..strRetInfo) end end